#!/bin/bash
#
# Monta tabela do SQLite com os dados das remunerações dos servidores e
# empregados da Prefeitura Municipal de Campinas num determinado ano e mês,
# extraídos de documento PDF baixado do Portal da Transparência.
#
# Argumentos: ANO no formato YYYY e MÊS no formato MM.
#
# Dependências: wget poppler-utils java sqlite3.
#
if (( $# != 2 )); then
  echo -e "\n Uso: $(basename $0) ANO MÊS\n"
  echo -e " ANO no formato YYYY e MÊS no formato MM.\n"
  exit
fi
ANO_MES="${1}${2}"
filename="TRANSP_$ANO_MES"
URL='http://www.campinas.sp.gov.br/servico-ao-cidadao/portal-da-transparencia/arquivos/'
# baixa documento PDF sem redundância identificando possível erro
wget --timestamping "${URL}${filename}.pdf"
ndx=$?
if (( $ndx )); then
  declare -a ERR_MSG=( [1]='Generic error code.' 'Parse error—for instance, when parsing command-line options...' 'File I/O error.' 'Network failure.' 'SSL verification failure.' 'Username/password authentication failure.' 'Protocol errors.' 'Server issued an error response.' )
  printf '\nErro ao baixar "%s" com a mensagem:\n\n\t%s\n\n' "$filename.pdf" "${ERR_MSG[$ndx]}"
  exit $ndx
fi
echo -n ' PDF --> XML'
pdftohtml -q -xml "${filename}.pdf"
echo -n ' --> TXT'
temp=/tmp/data.txt
java -jar CPS.jar "${filename}.xml" $temp
echo ' --> SQL'
tablename="folha$ANO_MES"
sqlite3 cps.sqlite <<EOT
-- CRIAÇÃO DA TABELA PARA O ANO/MÊS
$(sed -r "/^--/d; s/folha/$tablename/" folha.sql)
-- PREENCHIMENTO DA TABELA RECÉM CRIADA
.import $temp $tablename
-- INFORMA O NÚMERO DE REGISTROS
SELECT CR || " Tabela '$tablename' contém " || COUNT(*) || ' registros.' || CR FROM (SELECT x'0A' AS CR), $tablename;
EOT
